package edu.ptu.shortlink.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import edu.ptu.shortlink.project.dao.entity.ShortLinkDO;
import edu.ptu.shortlink.project.dto.req.RecycleBinPageReqDTO;
import edu.ptu.shortlink.project.dto.req.RecycleBinRecoverReqDTO;
import edu.ptu.shortlink.project.dto.req.RecycleBinRemoveReqDTO;
import edu.ptu.shortlink.project.dto.req.RecycleBinSaveReqDTO;
import edu.ptu.shortlink.project.dto.resp.ShortLinkPageRespDTO;

/**
 * @BelongsProject: shortlink
 * @BelongsPackage: edu.ptu.shortlink.project.service
 * @Author: HYJ
 * @CreateTime: 2025-05-01  21:31
 * @Description: 回收站服务接口
 * @Version: 1.0
 */
public interface IRecycleBinService extends IService<ShortLinkDO> {
    /**
     * 保存短链接到回收站
     *
     * @param requestParam 请求参数
     */
    void saveToRecycleBin(RecycleBinSaveReqDTO requestParam);

    /**
     * 回收站分页查询
     *
     * @param requestParam 请求参数
     * @return 分页结果
     */
    IPage<ShortLinkPageRespDTO> pageRecycleBin(RecycleBinPageReqDTO requestParam);

    /**
     * 从回收站恢复短链接
     *
     * @param requestParam 请求参数
     */
    void recoverFromRecycleBin(RecycleBinRecoverReqDTO requestParam);

    /**
     * 从回收站删除短链接
     *
     * @param requestParam 请求参数
     */
    void removeFromRecycleBin(RecycleBinRemoveReqDTO requestParam);
}
